﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace SpaceNeedle.City6473.Web.Data.Models
{
    public class WebSiteContent
    {
        public WebSiteContent()
        {
            this.RequestItems = new RequestItemsInfo();
            this.Requests = new RequestsInfo();
            this.Phones = new PhonesInfo();
            this.Apps = new AppsInfo();
            this.Alerts = new AlertsInfo();
            this.Users = new UsersInfo();
            this.AppContent = new AppContentInfo();
            this.Menu = new MenuInfo();
            this.Error = new ErrorInfo();
            this.Title = "Cidadão Conectado";
            this.Domain = "http://6473.azurewebsites.net";
            this.Copyright = "&copy; " + DateTime.Now.Year + " - Space Needle Tecnologia LTDA";
            this.AppName = "Cidadão Conectado";
            this.Operations = new OperationsInfo();
            this.Authentication = new AuthenticationInfo();
        }

        public string AppName { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public string Domain { get; set; }
        public string ExecutingDomain
        {
            get
            {
                try
                {
                    return HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
                }
                catch{}

                return this.Domain;
            }
        }
        public string Copyright { get; set; }


        public RequestItemsInfo RequestItems { get; set; }
        public RequestsInfo Requests { get; set; }
        public PhonesInfo Phones { get; set; }
        public AppsInfo Apps { get; set; }
        public AlertsInfo Alerts { get; set; }
        public UsersInfo Users { get; set; }
        public AppContentInfo AppContent { get; set; }
        public MenuInfo Menu { get; set; }
        public OperationsInfo Operations { get; set; }
        public ErrorInfo Error { get; set; }
        public AuthenticationInfo Authentication { get; set; }
        public class OperationsInfo
        {
            public OperationsInfo()
            {
                this.Add = "Adicionar";
                this.AddSymbol = "&#xE109;";

                this.Save = "Salvar";
                this.SaveSymbol = "&#xE105;";

                this.Edit = "Editar";
                this.EditSymbol = "&#xE104;";

                this.Send = "Enviar";
                this.SendSymbol = "&#xE11C;";

                this.Search = "Buscar";
                this.SearchSymbol = "&#xE11A;";

                this.Back = "Voltar";
                this.BackSymbol = "&#xE0D5;"; 

                this.Delete = "Excluir";
                this.DeleteSymbol = "&#xE107;";

                this.DeleteMessage = "Deseja exluir o item {0}?";

                this.Back = "Voltar";
                this.BackSymbol = "&#xE0D5;";

                this.Download = "Baixar";
                this.DownloadSymbol = "&#xE118;";

                this.Upload = "Upload";
                this.UploadSymbol = "&#xE11C;";

                this.Up = "Para Cima";
                this.UpSymbol = "&#xE018;";

                this.Down = "Para Baixo";
                this.DownSymbol = "&#xE019;";

                this.Refresh = "Atualizar";
                this.RefreshSymbol = "&#xE0F2;";

                this.Ok = "OK";
                this.OkSymbol = "&#xE10B;";

                this.Cancel = "Cancelar";
                this.CancelSymbol = "&#xE010A;"; 
                           
            }

            public string Add { get; set; }
            public string AddSymbol { get; set; }
            public string Save { get; set; }
            public string SaveSymbol { get; set; }
            public string Edit { get; set; }
            public string EditSymbol { get; set; }
            public string Send { get; set; }
            public string SendSymbol { get; set; }
            public string Search { get; set; }
            public string SearchSymbol { get; set; }
            public string Delete { get; set; }
            public string DeleteSymbol { get; set; }
            public string DeleteMessage { get; set; }
            public string Back { get; set; }
            public string BackSymbol { get; set; }
            public string Download { get; set; }
            public string DownloadSymbol { get; set; }
            public string Upload { get; set; }
            public string UploadSymbol { get; set; }
            public string Up { get; set; }
            public string UpSymbol { get; set; }
            public string Down { get; set; }
            public string DownSymbol { get; set; }
            public string Refresh { get; set; }
            public string RefreshSymbol { get; set; }
            public string Ok { get; set; }
            public string OkSymbol { get; set; }
            public string Cancel { get; set; }
            public string CancelSymbol { get; set; }

        }

        public class HomeInfo
        {
            public HomeInfo()
            {
                this.PageTitle = "Home";
            }

            public string PageTitle { get; set; }
        }

        public class AuthenticationInfo
        {
            public AuthenticationInfo()
            {
                this.PageTitle = "Home";
                this.EmailPageTitle = "E-mail";
                this.Email = "E-mail";
                this.SuccessPageTitle = "Bem-vindo";
                this.Welcome = "Bem-vindo!";
                this.WelcomeMessage = "";

                this.Title = "Entrar";
                this.Description = "Escolha como você deseja se conectar com a Prefeitura";

                this.Facebook = "Facebook";
                this.Twitter = "Twitter";
                this.Anonymous = "Anônimo";
                this.Name = "Nome";
                this.Code = "Código";
                this.Validate = "Validar";
            }

            public string PageTitle { get; set; }
            public string EmailPageTitle { get; set; }
            public string EmailValidationPageTitle { get; set; }
            public string Email { get; set; }
            public string SuccessPageTitle { get; set; }
            public string Welcome { get; set; }
            public string WelcomeMessage { get; set; }
            public string Facebook { get; set; }
            public string Twitter { get; set; }
            public string Anonymous { get; set; }
            public string Title { get; set; }
            public string Description { get; set; }
            public string Name { get; set; }
            public string Code { get; set; }
            public string Validate { get; set; }

        }

        public class ErrorInfo
        {
            public ErrorInfo()
            {
                this.PageTitle = "Home";
                this.Title = "Ops...";
                this.Description = "";
            }

            public string PageTitle { get; set; }
            public string Title { get; set; }
            public string Description { get; set; }
            
        }

        public class RequestItemsInfo
        {
            public RequestItemsInfo()
            {
                this.PageTitle = "Solicitações";
                this.EmptyAddress = "Endereço não informado.";
                this.Id = "ID";
                this.Address = "Endereço";
                this.Geolocation = "Localização";
                this.CreatedBy = "Solicitado por";
                this.CreationDate = "Data";
                this.Supporters = "Apoiadores";
                this.Status = "Status";
                this.Saving = "Salvando...";
                this.SaveStatus = "Salvar Status";
                this.SaveStatusErrorMessage = "Não foi possivel salvar a alteração de Status. Por favor tente novamente.";
                this.Photo = "Foto";
                this.Description = "Descrição";
                this.MapCenter = "-23.4848646,-46.8647897"; // from http://mygeoposition.com/
                this.StatusChangedToastMessage = "Solicitação Atualizada";
                this.StatusClosedToastMessage = "Solicitação Fechada";
                this.StatusSolvedToastMessage = "Solicitação Atendida!";
                this.MapSymbol = "&#xE1C4;";
                this.SupportersSymbol = "&#xE203;";
                this.ShowOnMap = "Ver no Mapa";
            }

            public string PageTitle { get; set; }
            public string EmptyAddress { get; set; }
            public string Id { get; set; }
            public string Address { get; set; }
            public string Geolocation { get; set; }
            public string CreatedBy { get; set; }
            public string CreationDate { get; set; }
            public string Description { get; set; }
            public string Supporters { get; set; }
            public string Status { get; set; }
            public string Saving { get; set; }
            public string SaveStatus { get; set; }
            public string SaveStatusErrorMessage { get; set; }
            public string Photo { get; set; }
            public string MapCenter { get; set; }
            public string StatusChangedToastMessage { get; set; }
            public string StatusClosedToastMessage { get; set; }
            public string StatusSolvedToastMessage { get; set; }
            public string MapSymbol { get; set; }
            public string ShowOnMap { get; set; }
            public string SupportersSymbol { get; set; }
        }

        public class RequestsInfo
        {
            public RequestsInfo()
            {
                this.PageTitle = "Tipos de Solicitação";
                this.Title = "Título";
                this.Description = "Descrição";
                this.IsEnabled = "Habilitado";
                this.Icon = "Ícone";
                this.Edit = "Editar Telefone";
                this.New = "Novo Tipo de Solicitação";
                this.Order = "Posição";
            }

            public string PageTitle { get; set; }
            public string Title { get; set; }
            public string Description { get; set; }
            public string IsEnabled { get; set; }
            public string Order { get; set; }

            public string Icon { get; set; }
            public string Edit { get; set; }
            public string New { get; set; }
        }

        public class PhonesInfo
        {
            public PhonesInfo()
            {
                this.PageTitle = "Telefones";
                this.Title = "Entidade";
                this.Number = "Número";
                this.New = "Novo Telefone";
                this.Edit = "Editar Telefone";
            }

            public string PageTitle { get; set; }
            public string Title { get; set; }
            public string Number { get; set; }
            public string Edit { get; set; }
            public string New { get; set; }
        }

        public class AlertsInfo
        {
            public AlertsInfo()
            {
                this.PageTitle = "Alertas";
                this.Title = "Título";
                this.Description = "Descrição";
                this.ToastMessage = "Atenção: ";
                this.New = "Novo Alerta";
            }
            
            public string PageTitle { get; set; }
            public string Title { get; set; }
            public string Description { get; set; }
            public string ToastMessage { get; set; }
            public string New { get; set; }
       
        }

        public class UsersInfo
        {
            public UsersInfo()
            {
                this.PageTitle = "Usuários";
                this.WrongUserMessage = "E-mail ou Senha incorretos, por favor tente novamente.";
                this.LoginTitle = "Entrar";
                this.Email = "E-mail";
                this.Password = "Senha";
                this.SignIn = "Entrar";
                this.Description = "Acesso Seguro ao Sistema";
                this.New = "Novo Usuário";
                this.Name = "Nome";
                this.Roles = "Permissão";
                this.IsActive = "Ativo";
            }

            public string PageTitle { get; set; }
            public string WrongUserMessage { get; set; }
            public string LoginTitle { get; set; }
            public string Email { get; set; }
            public string Password { get; set; }
            public string SignIn { get; set; }
            public string Description { get; set; }
            public string New { get; set; }
            public string Name { get; set; }
            public string Roles { get; set; }
            public string IsActive { get; set; }


        }

        public class AppsInfo
        {
            public AppsInfo()
            {
                this.PageTitle = "Aplicativos";
                this.Id = "Id";
                this.Name = "Nome";
                this.Icon = "Ícone";
                this.Uri = "Endereço Web";
                this.IsEnabled = "Habilitado";
                this.PermissionLevel = "Nível de Permissão";
                this.Description = "Descrição";
                this.New = "Novo Aplicativo";
                this.AppSymbol = "&#xE138;";
            }

            public string PageTitle { get; set; }
            public string Id { get; set; }
            public string Name { get; set; }
            public string Icon { get; set; }
            public string Uri { get; set; }
            public string IsEnabled { get; set; }
            public string PermissionLevel { get; set; }
            public string Description { get; set; }
            public string New { get; set; }
            public string AppSymbol { get; set; }
        }

        public class AppContentInfo
        {
            public AppContentInfo()
            {
                this.PageTitle = "App Content";
            }

            public string PageTitle { get; set; }
        }

        public class MenuInfo
        {
            public MenuInfo()
            {
                this.SignIn = "Entrar";
                this.SignOut = "Sair";
            }

            public string SignIn { get; set; }
            public string SignOut { get; set; }
        }
    }
}
